package com.ssy.lingxi.report.utils;

import com.ssy.lingxi.common.constant.Constants;
import com.ssy.lingxi.component.redis.service.IRedisStringUtils;
import org.apache.commons.lang.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 流水号生成工具类
 * @author 伍将
 * @date 2020/11/13
 * @version 2.0.0
 */
public class SerialNumberUtils {

    /**
     * 生成流水号
     * @param redisKey key
     * @param dateFormat 时间格式
     * @param numberLen 编码长度
     * @return 流水号
     */
    public static String getNumber(IRedisStringUtils redisStringUtils, String redisKey, String dateFormat, Integer numberLen) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        String date = sdf.format(new Date());
        Long number = redisStringUtils.increment(redisKey, Constants.REDIS_ORDER_INDEX);
        return date + StringUtils.leftPad(String.valueOf(number), numberLen, '0');
    }
}
